const WebSocket = require('ws');

// 创建WebSocket服务器
const wss = new WebSocket.Server({ port: 8080 });

console.log('WebSocket测试服务器已启动，监听端口 8080');
console.log('连接地址: ws://localhost:8080');

wss.on('connection', function connection(ws, req) {
    console.log('\n=== 新的连接建立 ===');
    console.log('客户端IP:', req.connection.remoteAddress);
    console.log('连接时间:', new Date().toISOString());

    // 发送欢迎消息
    ws.send('欢迎连接到WebSocket测试服务器！');

    ws.on('message', function incoming(data) {
        console.log('\n--- 收到消息 ---');
        console.log('数据类型:', typeof data);
        console.log('数据长度:', data.length);
        console.log('原始数据:', data);
        
        let messageText = '';
        if (Buffer.isBuffer(data)) {
            messageText = data.toString('utf8');
            console.log('转换为文本:', messageText);
        } else {
            messageText = data.toString();
        }

        // 回显消息
        const response = `服务器收到: ${messageText}`;
        console.log('发送回复:', response);
        ws.send(response);

        // 特殊命令处理
        if (messageText.toLowerCase() === 'ping') {
            setTimeout(() => {
                ws.send('pong');
            }, 100);
        } else if (messageText.toLowerCase() === 'test') {
            ws.send('测试成功！这是中文回复。');
        } else if (messageText.toLowerCase() === 'json') {
            ws.send(JSON.stringify({
                status: 'success',
                message: '这是JSON格式的回复',
                timestamp: Date.now()
            }));
        }
    });

    ws.on('close', function close() {
        console.log('\n=== 连接已关闭 ===');
        console.log('关闭时间:', new Date().toISOString());
    });

    ws.on('error', function error(err) {
        console.log('\n=== WebSocket错误 ===');
        console.error('错误详情:', err);
    });
});

wss.on('error', function error(err) {
    console.log('\n=== 服务器错误 ===');
    console.error('错误详情:', err);
});

console.log('\n使用说明:');
console.log('1. 在VS Code扩展中连接 ws://localhost:8080');
console.log('2. 发送任意消息，服务器会回复');
console.log('3. 特殊命令:');
console.log('   - 发送 "ping" 会收到 "pong"');
console.log('   - 发送 "test" 会收到中文测试消息');
console.log('   - 发送 "json" 会收到JSON格式回复');
console.log('4. 按 Ctrl+C 停止服务器');
